Android 自定义控件属性赋值 您所在的位置:网站首页 安卓 所有控件通用自定义属性怎么设置 Android 自定义控件属性赋值

Android 自定义控件属性赋值

2023-08-09 11:28| 来源: 网络整理| 查看: 265

1. 自定义属性

attrs.xml文件,在AttrAssignTextView中定义了5个属性,并且定义了一个单独的attrAssignStyle,用于后面的定义。

2. 属性赋值

布局文件中直接定义

自定义style,在布局文件中指定View的style

style.xml文件

attr1 value from Style attr2 value from Style

自定义主题theme

attr1 value from Theme attr2 value from Theme attr3 value from Theme attr4 value from Theme 3. 自定义控件

自定义控件AttrAssignTextView

public class AttrAssignTextView extends TextView { public AttrAssignTextView(Context context) { this(context, null); } public AttrAssignTextView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public AttrAssignTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView); String attr1 = a.getString(R.styleable.AttrAssignTextView_attr1); String attr2 = a.getString(R.styleable.AttrAssignTextView_attr2); String attr3 = a.getString(R.styleable.AttrAssignTextView_attr3); String attr4 = a.getString(R.styleable.AttrAssignTextView_attr4); String attr5 = a.getString(R.styleable.AttrAssignTextView_attr5); a.recycle(); setText((attr1 != null ? attr1 + "\n" : "") + (attr2 != null ? attr2 + "\n" : "") + (attr3 != null ? attr3 + "\n" : "") + (attr4 != null ? attr4 + "\n" : "") + (attr5 != null ? attr5 + "\n" : "")); } }

效果如下,布局文件定义 > style定义 > theme定义 在这里插入图片描述

4. defStyleAttr和defStyleRes

使用obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)方法,通过defStyleAttr和defStyleRes来获取默认值。

defStyleAttr设置默认值,defStyleAttr是当前Theme中的一个attribute,是指向style的一个引用。重新定义主题attrAssignTheme,添加attrAssignStyle属性,attrAssignStyle必须在attr中定义过。 attr1 value from Style Attr attr2 value from Style Attr attr3 value from Style Attr attr1 value from Theme attr2 value from Theme attr3 value from Theme attr4 value from Theme @style/attrAssignDefStyleAttr attr1 value from Default Style attr2 value from Default Style attr3 value from Default Style attr4 value from Default Style attr5 value from Default Style 只指定defStyleAttr值TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView, R.attr.attrAssignStyle, 0); 效果如下,布局文件定义 > style定义 > defStyleAttr定义 > theme定义 在这里插入图片描述只指定defStyleRes值TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView, 0, R.style.attrAssignDefStyleRes); 效果如下,布局文件定义 > style定义 > defStyleRes定义 > theme定义 在这里插入图片描述同时指定defStyleAttr和defStyleRes值TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AttrAssignTextView, R.attr.attrAssignStyle, R.style.attrAssignDefStyleRes); 效果如下,布局文件定义 > style定义 > defStyleRes定义 > theme定义 虽然attrAssignDefaultStyle中定义了attr5,但其它地方没有定义,attr5为空。 在这里插入图片描述

参考资料:http://blog.csdn.net/zq2114522/article/details/53312530

相关文章 Android 自定义控件属性 Android 自定义控件属性format详解 Android 自定义控件属性赋值



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有